import api from './config'
import logger from '../utils/logger.js'

/**
 * 上传文件（图片）
 * @param {File} file - 文件对象
 * @returns {Promise} API响应
 */
export const uploadFile = async (file) => {
  try {
    logger.log('📤 [API] 上传文件...')
    logger.log('📁 [API] 文件名:', file.name)
    logger.log('📏 [API] 文件大小:', (file.size / 1024).toFixed(2), 'KB')
    logger.log('📋 [API] 文件类型:', file.type)
    logger.log('🌐 [API] 请求地址: /api/goc/file/upload')
    logger.log('📊 [API] 请求方法: POST')
    logger.log('📦 [API] 请求格式: form-data')
    logger.log('🔑 [API] 将令牌放到请求头中')
    
    // 创建FormData对象
    const formData = new FormData()
    formData.append('file', file)
    
    logger.log('✅ [API] FormData已创建')
    
    // 发送请求
    const response = await api.post('/goc/file/upload', formData, {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    })
    
    logger.log('✅ [API] 文件上传成功')
    logger.log('📄 [API] 完整响应:', response)
    logger.log('📦 [API] 响应数据:', response?.data)
    
    // 检查响应
    if (response && response.code === 0 && response.data) {
      logger.log('✅ [API] 图片地址:', response.data)
      return response
    } else {
      logger.error('❌ [API] 上传失败:', response?.message)
      throw new Error(response?.message || '文件上传失败')
    }
    
  } catch (error) {
    logger.error('❌ [API] 上传文件失败:', error)
    logger.error('🔍 [API] 错误详情:', {
      status: error.response?.status,
      statusText: error.response?.statusText,
      data: error.response?.data,
      url: error.config?.url,
      method: error.config?.method
    })
    throw error
  }
}

